The present invention relates in general to buffer management in networking systems, and more particularly to a two-dimensional link list data structure for queuing and de-queuing packets.
The need for faster communication among computers and other systems requires ever faster and more efficient networks. Today, networks typically use an amalgam of various software and hardware to implement a variety of network functions and standards. Network devices such as client computer systems, servers, hubs, routers, switches, network backbones, etc., are each complex devices that require digital processing in hardware and software to facilitate network communication. Some tasks performed in a network device include translation between different network standards such as Ethernet and Asynchronous Transfer Mode (ATM), reformatting of data, traffic scheduling, routing of data cells, packets messages, etc. Depending on the particular protocol being implemented, some tasks may be performed at different points in the network. Also, because of the need for compatibility, flexibility and making changes to network functionality, much of today's network processing is implemented in software which is relatively slow compared to the bandwidth demanded by the network and applications running on the network. For example, the Layer 3 and Layer 4 functions of the OSI 7-Layer Model are typically implemented in software running on one or more devices on the network.
Network system performance is greatly affected by device architectures and CPU bandwidth. In conventional networking devices, for example, the main CPU performance, especially where there is a high volume of data traffic, as the CPU is required to oversee and implement processor intensive data buffering and transfer functions. This also results in increased memory access times, which degrades data transfer speed and network efficiency. Furthermore, in conventional networking systems, only one packet is processed at a time, which can lead to slow throughput due to inefficient memory allocation and access techniques. In network systems where a variety of data packet types and sizes are processed, memory access and allocation can be a serious problem.
Some network systems use a link-list data structure for queuing and de-queuing packets. However, these systems typically require a two-stage lookup in an off-chip memory to determine which packets are to be de-queued. This results in slow throughput and increased processor use, thereby resulting in less than optimal performance.